package com.example.sprintboot.mapper;

import com.example.sprintboot.entity.Cart;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CartMapper {

    /**
     * 查询所有购物车记录
     * @return 购物车记录列表
     */
    List<Cart> selectAll();

    /**
     * 根据 ID 查询单条购物车记录
     * @param id 购物车记录的 ID
     * @return 购物车记录
     */
    Cart selectById(Integer id);

    Cart selectByUserIdAndBookId(@Param("userId") Integer userId, @Param("bookId") Integer bookId);

    void updateNumById(@Param("id") Integer id, @Param("num") Integer num);

    /**
     * 插入一条购物车记录
     * @param cart 要插入的购物车记录
     */
    void insert(Cart cart);

    /**
     * 根据 ID 删除购物车记录
     * @param id 要删除的购物车记录的 ID
     */
    @Delete("delete from `cart` where id = #{id}")
    void deleteById(Integer id);

    void updateById(Cart cart);
}